<?php
/**
 * File ajax_controller.php
 * Tiếp nhận các yêu cầu ajax, xử lý, gọi hàm/phương thức tương ứng và in ra kết quả
 * tiếp nhận qua POST với cú pháp
 * requestType => 'function', 'object-name'
 * requestName => 'function-name', 'method-name'
 * requestParams => value | array(....)
 * Ví dụ array('requestType' => 'function', requestName => 'encodePassword', requestParams => 'hello');
 */


if (!isset($_POST['requestType'])) {
    echo '$1 Only accept request from valid POST method';
} else {
    require_once 'config.php';
    $result = '';
    if (strcasecmp($_POST['requestType'], 'function') == 0) {
        if (function_exists($_POST['requestName'])) {
            if (isset($_POST['requestParams'])) {
                $result = $_POST['requestName']($_POST['requestParams']);
            } else {
                $result = $_POST['requestName']();
            }
        }
    } else {
        $class = $_POST['requestType'];
        if (class_exists($class)) {
            $object = new $class;
            if (isset($_POST['requestName']) && is_callable(array($object, $_POST['requestName']))) {
                if (isset($_POST['requestParams'])) {
                    $result = $object->{$_POST['requestName']}($_POST['requestParams']);
                } else {
                    $result = $object->{$_POST['requestName']}();
                }
            } else {
                $result = '$3 Request error: method is not callable!';
            }
        } else {
            $result = '$2 Request error: class not exists!';
        }
    }

    echo $result;
}
